#include "IIC_HAL_QE.h"

void vfnIIC_SetAddress (uint8 u8module, uint8 u8address) 
{
    if (u8module == 1)
    {
        IIC1A = u8address;
    }
    else if (u8module == 2)
    {
        IIC2A = u8address;
    }
    else 
    {
        return;
    }
}

void vfnIIC_BaudRate (uint8 u8module, uint8 u8rate)
{
    if (u8module == 1)
    {
        IIC1F = u8rate; 
    }
    else if (u8module == 2)
    {
        IIC2F=u8rate;
    }
    else 
    {
        return;
    }
     
}

void vfnIIC_ModuleStatus (uint8 u8module, uint8 u8status)
{
    if (u8module == 1)
    {
        IIC1C1_IICEN = u8status;
    }
    else if (u8module == 2)
    {
        IIC2C1_IICEN = u8status;
    }
    else 
    {
        return; 
    }
  
}

void vfnIIC_InterruptStatus (uint8 u8module, uint8 u8status)
{
    if (u8module == 1)
    {
        IIC1C1_IICIE = u8status;
    }
    else if (u8module == 2)
    {
        IIC2C1_IICIE = u8status;
    }
    else 
    {
        return;
    }
}


void vfnIIC_ModeSelect (uint8 u8module, uint8 u8mode)
{
    if (u8module == 1)
    {
        IIC1C1_MST = u8mode;
    }
    else if (u8module == 2)
    {
        IIC2C1_MST = u8mode;
    }
    else 
    {
        return;
    }
}

uint8 u8IIC_MasterMode (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1C1_MST;
    }
    else if (u8module == 2)
    {
        return IIC2C1_MST;
    }
    else
    {
        return 0;
    }
}

void vfnIIC_DataDirection (uint8 u8module, uint8 u8dir)
{
    if (u8module == 1)
    {
        IIC1C1_TX = u8dir;
    }
    else if (u8module == 2)
    {
        IIC2C1_TX = u8dir;
    }
    else return;
}

uint8 u8IIC_TransmitMode (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1C1_TX;
    }
    else if (u8module == 2)
    {
        return IIC2C1_TX;
    }
    else 
    {
        return 0;
    }
}

void vfnIIC_TxAcknowledgeStatus (uint8 u8module, uint8 u8status)
{
    if (u8module == 1)
    {
        IIC1C1_TXAK = u8status;
    }
    else if (u8module == 2)
    {
        IIC2C1_TXAK = u8status; 
    }
    else 
    {
        return;
    }
}

void vfnIIC_Restart (uint8 u8module)
{
    if (u8module == 1)
    {
        IIC1C1_RSTA = 1;
    }
    else if(u8module == 2)
    {
        IIC2C1_RSTA = 1;
    }
    else 
    {
        return;
    }
}

uint8 u8IIC_TransferComplete (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_TCF;
    }
    else if (u8module == 2)
    {
        return IIC2S_TCF;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_CheckIfAdressed (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_IAAS;
    }
    else if (u8module == 2)
    {
        return IIC2S_IAAS;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_BusBusy (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_BUSY;
    }
    else if (u8module == 2)
    {
        return IIC2S_BUSY;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_ArbitrationLost (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_ARBL;
    }
    else if (u8module == 2)
    {
        return IIC2S_ARBL;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_ClearArbitrationLost (uint8 u8module)
{
    if (u8module == 1)
    {
        IIC1S_ARBL = 1;
    }
    else if (u8module == 2)
    {
        IIC2S_ARBL = 1;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_SlaveStatus (uint8 u8module)
{                       
    if (u8module == 1)
    {
        return IIC1S_SRW;
    }
    else if (u8module == 2)
    {
        return IIC2S_SRW;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_CheckInterrupt (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_IICIF;
    }
    else if (u8module == 2)
    {
        return IIC2S_IICIF;
    }
    else 
    {
        return 0;
    }
}

uint8 u8IIC_AckReceived (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1S_RXAK;
    }
    else if (u8module == 2)
    {
        return IIC2S_RXAK;
    }
    else 
    {
        return 0;
    }
}

void vfnIIC_SendData (uint8 u8module, uint8 u8data)
{
    if (u8module == 1)
    {
        IIC1D = u8data; 
    }
    else if (u8module == 2)
    {
        IIC2D = u8data;
    }
    else return;
}

uint8 u8IIC_ReadData (uint8 u8module)
{
    if (u8module == 1)
    {
        return IIC1D; 
    }
    else if (u8module == 2)
    {
        return IIC2D;
    }
    else 
    {
        return 0; 
    }
}


void vfnIIC_CallAddressStatus (uint8 u8module, uint8 u8status)
{
    if (u8module == 1)
    {
        IIC1C2_GCAEN = u8status;
    }
    else if (u8module == 2)
    {
        IIC2C2_GCAEN = u8status;
    }
    else 
    {
        return;
    }
}

void vfnIIC_AddressMode (uint8 u8module, uint8 u8mode)
{
    if (u8module == 1)
    {
        IIC1C2_ADEXT = u8mode; 
    }
    else if (u8module == 2)
    {
        IIC2C2_ADEXT = u8mode;
    }
    else 
    {
        return; 
    }
}

void vfnIIC_ClearInterruptFlag (uint8 u8module)
{
    if (u8module == 1)
    {
        IIC1S_IICIF = 1;
    }
    else if(u8module == 2)
    {
        IIC2S_IICIF = 1;
    }
    else 
    {
        return;
    }
}




